import { IECSLife } from "./ECSInterface";

export abstract class ECSBase implements IECSLife {

    private _enable: boolean = true;
    get enable(): boolean {
        return this._enable;
    }

    set enable(value: boolean) {
        if (this._enable === value) return;
        this._enable = value;
        this._enable ? this._ecsEnable() : this._ecsDisable();
    }

    /**************************内部继承使用*********************** */
    abstract _ecsUpdate(dt: number): void
    abstract _ecsEnable(): void
    abstract _ecsDisable(): void
    abstract _ecsDestroy(): void
    /**************************内部继承使用*********************** */




    /**************************生命周期*********************** */
    onInit(...args: any[]): void {

    }

    onEnable(): void {

    }

    onDisable(): void {

    }

    onUpdate(dt: number): void {

    }


    onDestroy(): void {

    }
    /**************************生命周期*********************** */
}

